--[[
随机收藏点赞函数
功能：根据概率随机点赞和收藏视频
参数：无
返回值：布尔值，表示是否执行了点赞或收藏操作
--]]

local 点击坐标 = require("basic_operations.点击坐标")
local 获取屏幕分辨率 = require("screen_and_resolution.获取屏幕分辨率")
local 中心找节点 = require("node_operations.中心找节点")

-- 检查收藏意外弹窗并处理
local function 检查收藏意外弹窗()
    -- 加载节点配置
    local node_config = require("node_config")
    
    -- 给系统一点时间显示弹窗
    sleep(800)
    
    -- 检查是否出现取消按钮
    if 中心发现节点(node_config.取消按钮) then
        print("检测到收藏意外弹窗，点击取消")
        中心找节点(node_config.取消按钮, true)
        sleep(1000)  -- 等待弹窗消失
        return true
    end
    
    return false
end

-- 中心发现节点：只检查节点是否存在，不执行点击操作
local function 中心发现节点(nodeArr)
    -- 检查nodeArr是否为nil或者不是表
    if nodeArr == nil or type(nodeArr) ~= "table" then
        print("错误: 节点信息为空或格式不正确")
        return false
    end
    
    -- 检查nodeArr[5]是否存在
    if nodeArr[5] == nil then
        print("错误: 节点信息不完整，缺少第5个元素")
        return false
    end
    
    -- 输出查找信息
    print("尝试查找节点: " .. tostring(nodeArr[5].className or nodeArr[5].class) .. 
          ", 文本: " .. tostring(nodeArr[5].text))
    
    local ret = nil
    -- 使用pcall包装可能出错的调用
    local success, result = pcall(function()
        -- 尝试方法1：使用五个参数
        local node = nodeLib.findOne(nodeArr[1], nodeArr[2], nodeArr[3], nodeArr[4], nodeArr[5])
        if node then return node end
        
        -- 如果失败，尝试方法2：直接传递第5个元素
        return nodeLib.findOne(nodeArr[5])
    end)
    
    if not success then
        print("查找节点时出错: " .. tostring(result))
        return false
    end
    
    ret = result
    
    if ret ~= nil then
        -- 节点找到，添加简单的打印信息
        print("找到节点！位置：左=" .. ret.bounds.l .. ", 上=" .. ret.bounds.t ..
              ", 右=" .. ret.bounds.r .. ", 下=" .. ret.bounds.b)
        return true
    end
    
    print("未找到节点")
    return false
end

-- 随机收藏点赞函数
function 随机收藏点赞()
    print("开始执行随机收藏点赞")
    
    -- 加载node_config
    local node_config = require("node_config")
    
    -- 设置概率阈值（66%概率点赞，66%概率收藏）
    local 点赞概率 = 66
    local 收藏概率 = 66
    
    -- 生成随机数 (1-100)
    local 随机数 = math.random(1, 100)
    
    -- 记录是否有操作
    local 有操作 = false
    
    -- 检查是否触发点赞
    if 随机数 <= 点赞概率 then
        print("触发点赞操作")
        
        -- 尝试使用节点方式点赞
        local 点赞成功 = false
        
        -- 尝试方法1：使用node_config中的点赞按钮配置
        if 中心找节点(node_config.点赞按钮, true) then
            print("点赞成功 - 使用node_config中的节点")
            点赞成功 = true
            有操作 = true
            -- 点赞后短暂等待
            sleep(math.random(500, 1000))
        else
            print("使用node_config中的点赞按钮失败，尝试其他方法")
        end
        
        -- 尝试方法2：使用ID列表查找按钮
        if not 点赞成功 and node_config.可能的点赞按钮ID then
            print("尝试使用ID列表查找点赞按钮")
            local 智能ID定位按钮 = require("like_and_collect.智能ID定位按钮")
            local 成功, _, _, _ = ID列表查找按钮(node_config.可能的点赞按钮ID, 
                                         "android.widget.LinearLayout", 
                                         "com.phoenix.read", 
                                         true)
            if 成功 then
                print("点赞成功 - 使用ID列表")
                点赞成功 = true
                有操作 = true
                sleep(math.random(500, 1000))
            end
        end
        
        -- 如果前两种方法都失败，使用自适应坐标点击
        if not 点赞成功 then
            print("尝试使用自适应坐标点赞")
            
            -- 使用屏幕分辨率的相对坐标
            local 屏幕宽度, 屏幕高度 = 获取屏幕分辨率()
            local 点赞x = math.floor(屏幕宽度 * 0.85)
            local 点赞y = math.floor(屏幕高度 * 0.75)
            
            点击坐标(点赞x, 点赞y, 500)
            print("点赞完成 - 使用自适应坐标")
            点赞成功 = true
            有操作 = true
            sleep(math.random(500, 1000))
        end
    end
    
    -- 生成新的随机数判断是否收藏
    随机数 = math.random(1, 100)
    if 随机数 <= 收藏概率 then
        print("触发收藏操作")
        
        -- 尝试使用节点方式收藏
        local 收藏成功 = false
        
        -- 尝试方法1：使用node_config中的收藏按钮配置
        if 中心找节点(node_config.收藏按钮, true) then
            print("收藏成功 - 使用node_config中的节点")
            收藏成功 = true
            有操作 = true
            -- 收藏后短暂等待
            sleep(math.random(500, 1000))
            -- 检查是否出现收藏意外弹窗
            检查收藏意外弹窗()
        else
            print("使用node_config中的收藏按钮失败，尝试其他方法")
        end
        
        -- 尝试方法2：使用ID列表查找按钮
        if not 收藏成功 and node_config.可能的收藏按钮ID then
            print("尝试使用ID列表查找收藏按钮")
            local 智能ID定位按钮 = require("like_and_collect.智能ID定位按钮")
            local 成功, _, _, _ = ID列表查找按钮(node_config.可能的收藏按钮ID, 
                                         "android.widget.LinearLayout", 
                                         "com.phoenix.read", 
                                         true)
            if 成功 then
                print("收藏成功 - 使用ID列表")
                收藏成功 = true
                有操作 = true
                sleep(math.random(500, 1000))
                -- 检查是否出现收藏意外弹窗
                检查收藏意外弹窗()
            end
        end
        
        -- 如果前两种方法都失败，使用自适应坐标点击
        if not 收藏成功 then
            print("尝试使用自适应坐标收藏")
            
            -- 使用屏幕分辨率的相对坐标
            local 屏幕宽度, 屏幕高度 = 获取屏幕分辨率()
            local 收藏x = math.floor(屏幕宽度 * 0.85)
            local 收藏y = math.floor(屏幕高度 * 0.65)
            
            点击坐标(收藏x, 收藏y, 500)
            print("收藏完成 - 使用自适应坐标")
            收藏成功 = true
            有操作 = true
            sleep(math.random(500, 1000))
            -- 检查是否出现收藏意外弹窗
            检查收藏意外弹窗()
        end
    end
    
    -- 如果有操作，额外等待一段时间
    if 有操作 then
        local 额外等待 = math.random(800, 1500)
        print("操作后等待: " .. 额外等待 .. "ms")
        sleep(额外等待)
    end
    
    return 有操作
end

return 随机收藏点赞 